--[[
描述 ： 弹出选择框
作者 ： fudazhi
时间 ： 14/04/11
]]
UIPopSelectBox = Class(MLView,'UIPopSelectBox');
--item
--常规
--1、背景颜色
UIPopSelectBox.bgColor				= nil;      -- 背景颜色
UIPopSelectBox.focusColor 			= nil;      -- 聚集颜色
UIPopSelectBox.lineColor			= nil;		-- 底线颜色
--2、背景图片
UIPopSelectBox.bgImage    			= nil;      -- 背景图片
UIPopSelectBox.focusImage 			= nil;      -- 聚集图片

--checkBox
--1、背景颜色
UIPopSelectBox.checkbgColor			= nil;      -- 背景颜色
UIPopSelectBox.checkfocusColor      = nil;      -- 聚集颜色
--2、背景图片
UIPopSelectBox.checkbgImage    		= nil;      -- 背景图片
UIPopSelectBox.checkfocusImage      = nil;      -- 聚集图片

--selectBox
--标题
UIPopSelectBox.title 				= nil; 		--标题
UIPopSelectBox.mTitleHeight         = nil; 		--标题高度
UIPopSelectBox.titleFontHeight  	= nil; 		--标题字体大小
UIPopSelectBox.titleFontColor  		= nil; 		--标题字体颜色
UIPopSelectBox.titleBgColor    		= nil; 		--标题背景颜色
UIPopSelectBox.titleBgImage    		= nil; 		--标题背景图片

--内容
UIPopSelectBox.mItemHeight 			= nil; 		--内容单个Item高度
UIPopSelectBox.contextFontHeight 	= nil; 		--内容字体大小
UIPopSelectBox.contextFontColor 	= nil; 		--内容字体颜色
UIPopSelectBox.ontextBgColor  		= nil; 		--内容背景颜色
UIPopSelectBox.contextBgImage 		= nil;  	--内容背景图片

--按钮
UIPopSelectBox.btnImage 			= nil; 		--按钮背景图片
UIPopSelectBox.btnFocusImage 		= nil; 		--按钮聚焦背景图片

UIPopSelectBox.mWidth  				= nil; 		--控件宽度
UIPopSelectBox.mHeight 				= nil;  	--控件高度

UIPopSelectBox.mIsScroll 			= nil;
UIPopSelectBox.mList     			= nil;
UIPopSelectBox.mItems    			= nil;
UIPopSelectBox.onClickEvent        	= nil;

UIPopSelectBox.mIsMultiple 			= nil;		--是否多选
UIPopSelectBox.mCheckBoxTab 		= nil;		--多选数组 存储true false

UIPopSelectBox.mPopCanvas 			= nil;
UIPopSelectBox.mPopCover 			= nil;
UIPopSelectBox.mViewCtrl 			= nil;
UIPopSelectBox.index      = 1 ;
--[[
功能   ： 初始化 UIPopSelectBox 控件
参数   ： w           --  宽度
h           --  高度
返回   ： UIPopSelectBox 实例
]]

function UIPopSelectBox:init(title, items, multiple, viewCtrl,id)

  --local sw, sh = MLNative.getScreen():getWH();
  local sw, sh = viewCtrl.rootView:getWH();
  local hm = sh - AH(UITheme.POPSELECTBOX_TB_GAP_MIN) *2;   --  最大高度
  local isScroll = false;
  local count =   #items;
  local height = count * AH(UITheme.POPSELECTBOX_ITEM_HEIGHT) + AH(UITheme.POPSELECTBOX_TITLE_HEIGHT);
  --height = AH(height);

  --print('UIPopSelectBox.new', height, hm);
  if height > hm then
    height = hm;
    isScroll= true;
  end

  if height < AH(UITheme.POPSELECTBOX_HEIGHT_MAX) then
    height = AH(UITheme.POPSELECTBOX_HEIGHT_MAX);
  end
  local width = sw - AW(UITheme.POPSELECTBOX_LR_GAP)*2;
  --local width = sw ;

  self:initView(width, height, viewCtrl,id);

  --self.mViewCtrl = {};
  --setmetatable(self.mViewCtrl, {__mode="kv"});   -- 弱引用
  self.weekTable.mViewCtrl = viewCtrl;

  self.mItems = items;
  self.mIsScroll = isScroll;
  self.mIsMultiple = multiple or false;
  -- 初始化
  --item
  --常规
  --1、背景颜色
  self.bgColor			= UITheme.POPSELECTBOX_COLOR_BG;      -- 背景颜色
  self.focusColor 		= UITheme.POPSELECTBOX_COLOR_FOCUS;      -- 聚集颜色
  self.lineColor			= UITheme.POPSELECTBOX_COLOR_LINE;		-- 底线颜色
  --2、背景图片
  self.bgImage    		= UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_BG);      -- 背景图片
  self.focusImage 		= UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_FOCUS);      -- 聚集图片

  --checkBox
  --1、背景颜色
  self.checkbgColor		= UITheme.POPSELECTBOX_COLOR_CHECKBG;      -- 背景颜色
  self.checkfocusColor    = UITheme.POPSELECTBOX_COLOR_CHECKFOCUS;      -- 聚集颜色
  --2、背景图片
  self.checkbgImage    	= UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_CHECKBG);      -- 背景图片
  self.checkfocusImage    = UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_CHECKFOCUS);      -- 聚集图片

  --selectBox
  --标题
  self.title 				= title; 		--标题
  self.mTitleHeight       = AW(UITheme.POPSELECTBOX_TITLE_HEIGHT); 		--标题高度
  self.titleFontHeight  	= AW(UITheme.POPSELECTBOX_TITLE_FONT_HEIGHT); 		--标题字体大小
  self.titleFontColor  	= UITheme.POPSELECTBOX_TITLE_FONT_COLOR; 		--标题字体颜色
  self.titleBgColor    	= nil; 		--标题背景颜色
  self.titleBgImage    	= UIImage.imageName(UITheme.POPSELECTBOX_TITLE_BG); 		--标题背景图片

  --内容
  self.mItemHeight 		= AH(UITheme.POPSELECTBOX_ITEM_HEIGHT); 		--内容单个Item高度
  self.contextFontHeight 	= AW(UITheme.POPSELECTBOX_FONT_HEIGHT); 		--内容字体大小
  self.contextFontColor 	= UITheme.POPSELECTBOX_FONT_COLOR; 		--内容字体颜色
  self.contextBgColor  	= nil; 		--内容背景颜色
  self.contextBgImage 	= UIImage.imageName(UITheme.POPSELECTBOX_CONTEXT_BG);  	--内容背景图片

  self.btnImage 			= UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_BUTTON); 		--按钮背景图片
  self.btnFocusImage 		= UIImage.imageName(UITheme.POPSELECTBOX_IMAGE_BUTTONFOCUS); 		--按钮聚焦背景图片

  self.mWidth  			= width; 	--控件宽度
  self.mHeight 			= height;  	--控件高度


  -- 添加控件
  self.mList = UIScrollView.new():init(self.mWidth, (height - self.mTitleHeight - self.mTitleHeight), false,viewCtrl);
  --	self.mList.onScroll = false;
  --	self.mList.onScrollEnd = false;

  self:draw();
  self:PopView(self);
  return self;
end



--[[
功能   ： 设置当前选择索引
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:setIndex(index)
  self.index= index;
end


--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:draw()

  local g = self:getGraphic();
  g:clear();
  --title BG
  g:drawImage(self.titleBgImage, 0, 0, self.mWidth, self.mTitleHeight);

  local txtw = MLNative.measStringWidth(self.title, self.titleFontHeight, nil);
  --处理title文字过长
  local offX = 0;
  local txt = self.title;
  if (txtw < self.mWidth) then
    offX = (self.mWidth-txtw)/2;
  else
    local lines = UIUtils.calcTextLine(self.title, self.mWidth, 1, self.titleFontHeight, self.fs);
    self.title = lines[1];
  end
  g:drawString(self.title, offX, (self.mTitleHeight-self.titleFontHeight)/2, UIColor.COLOR_WHITE, self.titleFontHeight);

  --body BG
  g:drawImage(self.contextBgImage, 0, self.mTitleHeight, self.mWidth, self.mHeight-self.mTitleHeight);


--g:drawImage(self.titleBgImage, 0,  self.mHeight-self.mTitleHeight, self.mWidth, self.mTitleHeight);
--  g:fillRect( 0,  self.mHeight-self.mTitleHeight, self.mWidth, self.mTitleHeight , 0x888888,3)    
    
   g:drawLine ( 0,  self.mHeight-self.mTitleHeight, self.mWidth,  self.mHeight-self.mTitleHeight, 0x68b1dd, 2)

  --取消&确定按钮
  
    local exitBtn = UIButton.new():init(self.mWidth-AW(4), self.mTitleHeight-AW(4),self.weekTable.mViewCtrl )
    exitBtn.bgImage = nil ;
    exitBtn.focusImage =nil ;
    exitBtn.fontColor = 0x68b1dd ;
    exitBtn.fontFocusColor = 0x000066 ;
    exitBtn.parent = self;
    if self.mIsMultiple then
      exitBtn.text = "确定";
      -- exitBtn.onClick = self.onSelClick;
      exitBtn.onClick = function (  )
        -- body
        local data = {};
        for k, v in ipairs(self.mItems) do
          if self.mCheckBoxTab[k] then
            -- print('----self.mCheckBoxTab[k]', self.mCheckBoxTab[k], k);
            -- data[#data + 1] = v;
            data[#data + 1] = k;
          end
        end

        if self.onClickEvent then
          self.onClickEvent(data);
          self:ClosePop(self);
        end
      end
    else
      exitBtn.text = "取消";
      -- exitBtn.onClick = UIPopSelectBox.onExit;
      exitBtn.onClick = function (  )
        -- body
        self:ClosePop(self);
      end
    end
    exitBtn:show();
    self:add(exitBtn, AW(2),  self.mHeight-self.mTitleHeight + AW(2));

  -- 添加list
  local w ,h = self.mList:getWH()
--  if self.mCheckBoxTab == nil then
    self.mCheckBoxTab = {};
--  end
  for k, v in ipairs(self.mItems) do
    self.mCheckBoxTab[k] = false;
    local ps = UIPopSelItems.new():init(v, w, self.mItemHeight,self.weekTable.mViewCtrl);
    ps.text = v;
    --1、字体
    ps.fontHeight = self.contextFontHeight;
    ps.fontColor = self.contextFontColor;
    -- ps.fontFocusColor = ;
    --2、背景颜色
    ps.bgColor = self.bgColor;
    ps.focusColor = self.focusColor;
    ps.lineColor = 0xeeeeee;
    --3、背景图片
  --  ps.bgImage = self.bgImage;
   -- ps.focusImage = self.focusImage;
    --checkBox
    --1、背景颜色
    ps.checkbgColor = self.checkbgColor;
    ps.checkfocusColor = self.checkfocusColor;
    --2、背景图片
    ps.checkbgImage = self.checkbgImage;
    ps.checkfocusImage = self.checkfocusImage;

    ps.mIsMultiple = self.mIsMultiple;
    ps.mTextSpace = AH(20);
    ps.onClickEvent = function ()
       
       
      -- body
      if self.mIsMultiple then
        -- print('-----function ', self, ps, ps.tag, ps.mIsClick);
        self.mCheckBoxTab[ps.tag] = ps.mIsClick;
      else
        self.onClickEvent(ps.tag);
        -- MLNative.ClosePop();
        self:ClosePop(self);
      end
    end
    ps.tag = k;
    if self.index == k then ps.isSel = true end
    ps.parent = self;
    ps:show();
    self.mList:add(ps);
  end

  self:add(self.mList, 0, self.mTitleHeight);
--	print('UIPopSelectBox:draw', self);
end

--[[
功能   ： Pop View
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:PopView(view)
  -- print('-----pop-self', self);
  -- local scr = MLNative.getScreen();
  if not self.weekTable.mViewCtrl.navCtrl  then self.weekTable.mViewCtrl.navCtrl = Window.navCtrl; end
  --local scr = self.mViewCtrl.navCtrl.viewCtrls[#self.mViewCtrl.navCtrl.viewCtrls].rootView;
  local scr = self.weekTable.mViewCtrl.rootView;
  local sw, sh = MLNative.deviceWH();
  --print('popview', scr, sw, sh);
  local w, h = view:getWH();
  if self.mPopCanvas  then return; end

  self.mPopCover = MLView.new():initView(sw, sh,self.weekTable.mViewCtrl);
  -- local g = self.mPopCover:getGraphic();
  -- g:clear();
  -- g:fillRect (0, 0, sw, sh, UIColor.COLOR_BLACK, 0);

  self.mPopCover:setColor(0x000000);
  self.mPopCover:setAlpha(0.65);
  scr:add(self.mPopCover, 0, 0);
  self.mPopCover.onClick = function (  )
  -- body
  end

  --  scr:add(view, (sw-w)/2, (sh-h)/2);
  scr:add(view,  AW(UITheme.POPSELECTBOX_LR_GAP), (sh-h)/2);

  self.mPopCanvas = view;
end

--[[
功能   ： Close View
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:ClosePop(view)
  -- print('---close self', self);
  -- if self.mPopCover then MLNative.getScreen():del(self.mPopCover); end
  -- if self.mPopCanvas then MLNative.getScreen():del(self.mPopCanvas); end
  --  if self.mPopCover then self.mViewCtrl.navCtrl.viewCtrls[#self.mViewCtrl.navCtrl.viewCtrls].rootView:del(self.mPopCover); end
  --  if self.mPopCanvas then self.mViewCtrl.navCtrl.viewCtrls[#self.mViewCtrl.navCtrl.viewCtrls].rootView:del(self.mPopCanvas); end
  if self.mPopCover then self.weekTable.mViewCtrl.rootView:del(self.mPopCover); end
  if self.mPopCanvas then self.weekTable.mViewCtrl.rootView:del(self.mPopCanvas); end
  self.mPopCover = nil;
  self.mPopCanvas = nil;
end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:show()
  if self.mList then
     self.mList:delAll()
  end
  self:draw();
  --MLNative.PopView(self);
  self:PopView(self);
end

--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function UIPopSelectBox:update()
  self:draw();
end


--[[ 
例子V2.0

local items = {'选项1','选项2','选项3','选项4','选项5','选项6','选项7','选项8'};
local aa = UIPopSelectBox.new():init('我是标题', items, false, self);  --默认false不允许多选
aa.onClickEvent = function ( tab )
	-- body
	--单选返回items的id； 多选返回items的id数组
end;

--   不用添加到 rootView里面

]]
